/* 
  1. 用户上滑界面，滚动条触底，开始加载下一页数据
    1. 滚动跳触底事件
    2. 判断是否还有下一页
      1.  获取总页数
        总页数 = Math.ceil(总条数 / 页容量 pagesize)
      2。 获取当前的页码
      3. 判断一下当前的页码是否>=总页数
      3. >= 就没有下一页
    3. 假如没有下一页就会弹出一个提示框
    4. 假如还有下一页数据 来加载下一页数据
      1. 当前页码++ 
      2 重新发送新的请求
      3. 数据请求回来 要对data中的数组拼接而不是替换
2. 下列刷新事件
  1. 触发下拉刷新事件,页面json文件中配置
    找到出发下拉加载刷新事件
  2. 设置数据 数组
  3 重置页码 设置为 1
  4 重新发送请求
  5 数据请求回来，需要手动关闭等待效果
*/
import { request } from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({
  data: {
    tabs: [
      {
        id: 0,
        value: "综合",
        isActivated: true
      },
      {
        id: 1,
        value: "销量",
        isActivated: false
      },
      {
        id: 2,
        value: "价格",
        isActivated: false
      }
    ],
    goodsList: []
  },
  QueryParams: {
    query: "",
    cid: "",
    pagenum: 1,
    pageSize: 10  // 自定义页容量
  },
  totalPage: 0,
  handleTabsChange(e) {
    // 获取被点击的标题索引
    const index = e.detail.index;
    // 修改原数组
    let {tabs} = this.data;
    tabs.forEach((v,i) => i===index ? v.isActivated = true : v.isActivated = false);
    this.setData({
      tabs
    })
  },
  // 获取商品列表
  async getgoodsList() {
    const res = await request({url: '/goods/search',data: this.QueryParams});
    // 获取总条数
    const total = res.total
    this.totalPage = Math.ceil(total / this.QueryParams.pageSize)
    this.setData({
      // 拼接的数组
      goodsList: [...this.data.goodsList,...res.goods]
    })
    // 关闭下拉刷新的窗口
    wx.stopPullDownRefresh()
  },
  // 滚动条触底事件
  onReachBottom(){ 
   // 判断有没有下一页数据
   if(this.QueryParams.pagenum >= this.totalPage){
    wx.showToast({
      title: '没有更多了'
    })  
   } else { // 还有下一页数据
    this.QueryParams.pagenum++;
    this.getgoodsList()
   }
  },
  // 下拉刷新事件
  onPullDownRefresh(){
    // 重置数组
    this.setData({
      goodsList: []
    });
    this.QueryParams.pagenum = 1
    this.getgoodsList()
  },
  onLoad: function (options) {
    this.QueryParams.cid = options.cid || "";
    this.QueryParams.query = options.query || "";
    this.getgoodsList()
  }
})